<?php

require_once '../datos/AccesoDatos.php';
include_once ('sqlinjection.php');
include 'session.php';


if (isset($_GET['accion'])) {
    $accion = $_GET['accion'];
}

//foreach ($_POST as $key=>$value){
//$post = $key.":".$value;
//}




$objpersona = new PersonaFisica();
switch ($accion) {


    case "buscar": $objpersona->TraerPersona();
        break;
    case "buscarpaciente": $objpersona->TraerPaciente();
        break;
    case "add" : $objpersona->actualizarDatosPersonales($accion);
        break;
    
    case "edit" : $objpersona->actualizarDatosPersonales($accion);
        break;
    
    case "otrosdatos" : $objpersona->actualizarOtrosDatosPersonales();
        break;
    
    case "tel": $objpersona->actualizarTelefonos();
        break;
    
    case "email": $objpersona->actualizarEmail();
        break;
    
    case "dir": $objpersona->actualizarDir();
        break;
    
    case "centrosmedicos": $objpersona->actualizarCentrosMedicosxPersona();
        break;
    
    case "traerpaises":$objpersona->traerPaises();
        break;
    
    case "traerProvincia":$objpersona->traerProvincia();
        break;
    
    case "traerCantones":$objpersona->traerCantones();
        break;
    
    case "traerDistritos":$objpersona->traerDistritos();
        break;
    
    case "traerNacionalidades":$objpersona->traerNacionalidades();
        break;
    
    case "imagen":$objpersona->actualizarImagen();
        break;
    
    case "traerImagenPerfil":$objpersona->traerImagenPerfil();
        break;
    
    case "traerImagenPerfil":$objpersona->traerImagenPerfil();
        break;
    
    case "traercorreo":$objpersona->traerCorreos();
        break;
    
    
    
}

class PersonaFisica {

    var $ID_PERSONA;
    var $ID_PERSONAVIEJO;
    var $ID_RELIGION;
    var $ID_ETNIA;
    var $ID_ESCOLARIDAD;
    var $ID_CENTROEDUCATIVO;
    var $OP_IDENTIFICACION;
    var $DS_IDENTIFICACION;
    var $DS_NOMBRE;
    var $DS_ALIAS;
    var $DS_APELLIDO1;
    var $DS_APELLIDO2;
    var $OP_SEXO;
    var $OP_CIVIL;
    var $IM_PERSONA;
    var $SG_TIPOSANGRE;
    var $ID_USRINSERT;
    var $VI_RECORDATORIODIAS;
    var $VI_RECORDATORIOHORAS;
    var $FH_INSERT;
    var $ID_USRMOD;
    var $FH_MOD;
    var $ID_NACIONALIDAD;
    var $ID_PAIS;
    var $ID_PROVINCIA;
    var $ID_CANTON;
    var $ID_DISTRITO;
    var $recEmail;
    var $recSms;
    var $recTel;
    var $TIPOEMPLEADO;
    var $CODIGO;

    /**
     * Trae los datos de una persona para manipular su información en la BD.
     */
    public function TraerPersona() {

        $this->ID_PERSONA = $_GET['ID_PERSONA'];
        $sql = "pa_ListarDatosPersonales('" . $this->ID_PERSONA;
        $objDatos = new AccesoDatos();
        $objDatos->ejecutarConsulta($sql);
        $resultados = array();

        $error = $objDatos->devuelveError();

        if ($error != "") {
            $my_array = array('error' => $error);
        } else {

            while ($row = $objDatos->devuelveArreglo()) {

                $_SESSION['IdPersona'] = $row['ID_PERSONA'];

                $my_array = array(
                    'idpersona' => $row['ID_PERSONA'],
                    'idreligion' => $row['ID_RELIGION'],
                    'idetnia' => $row['ID_ETNIA'],
                    'idescolaridad' => $row['ID_ESCOLARIDAD'],
                    'opidentificacion' => $row['OP_IDENTIFICACION'],
                    'nombre' => $row['DS_NOMBRE'],
                    'ape1' => $row['DS_APELLIDO1'],
                    'ape2' => $row['DS_APELLIDO2'],
                    'alias' => $row['DS_ALIAS'],
                    'fcnacimiento' => $row['FC_NACIMIENTO'],
                    'sexo' => $row['OP_SEXO'],
                    'civil' => $row['OP_CIVIL'],
                    'sangre' => $row['SG_TIPOSANGRE'],
                    'horas' => $row['VI_HORASRECORDATORIO'],
                    'dias' => $row['VI_DIASRECORDATORIO'],
                    'llamada' => $row['lg_recordatoriollamada'],
                    'email' => $row['lg_recordatorioemail'],
                    'sms' => $row['lg_recordatoriosms'],
                    'iddistrito' => $row['ID_DISTRITO'],
                    'idcanton' => $row['ID_CANTON'],
                    'idprovincia' => $row['ID_PROVINCIA'],
                    'idpais' => $row['idpais'],
                    'pais' => $row['pais'],
                    'idnacionalidad' => $row['idnacionalidad'],
                    'nacionalidad' => $row['nacionalidad'],
                    'puesto' => $row['puesto'],
                    'idactividad' => $row['idactividad'],
                    'actividad' => $row['actividad'],
                    'idcentro' => $row['idcentro'],
                    'centro' => $row['centro'],
                    'idempleado' => $row['idempleado'],
                    'tipoempleado' => $row['tipoempleado'],
                    'codigo' => $row['codigoempleado'],
                    'fechaingreso' => $row['fechaingreso'],
                    'estado' => $row['estado'],
                    'imagen' => $row['ID_IMAGEN'], //Para saber si tiene imagen de perfil
                    'top' => $row['DS_TOP'],
                    'left' => $row['DS_LEFT']
                );
            }
        }

        echo json_encode($my_array);
    }

    /**
     * Trae los datos del paciente al cual se le va a hacer una cita.
     */
     public function TraerPaciente() {

        $this->ID_PERSONA = $_GET['ID_PERSONA'];
        $sql = "pa_ListarDatosPersonales('" . $this->ID_PERSONA;
        $objDatos = new AccesoDatos();
        $objDatos->ejecutarConsulta($sql);
        $resultados = array();

        $error = $objDatos->devuelveError();

        if ($error != "") {
            $my_array = array('error' => $error);
        } else {

            while ($row = $objDatos->devuelveArreglo()) {

                $my_array = array(
                    'idpersona' => $row['ID_PERSONA'],
                    'idreligion' => $row['ID_RELIGION'],
                    'idetnia' => $row['ID_ETNIA'],
                    'idescolaridad' => $row['ID_ESCOLARIDAD'],
                    'opidentificacion' => $row['OP_IDENTIFICACION'],
                    'nombre' => $row['DS_NOMBRE'],
                    'ape1' => $row['DS_APELLIDO1'],
                    'ape2' => $row['DS_APELLIDO2'],
                    'alias' => $row['DS_ALIAS'],
                    'fcnacimiento' => $row['FC_NACIMIENTO'],
                    'sexo' => $row['OP_SEXO'],
                    'civil' => $row['OP_CIVIL'],
                    'sangre' => $row['SG_TIPOSANGRE'],
                    'horas' => $row['VI_HORASRECORDATORIO'],
                    'dias' => $row['VI_DIASRECORDATORIO'],
                    'llamada' => $row['lg_recordatoriollamada'],
                    'email' => $row['lg_recordatorioemail'],
                    'sms' => $row['lg_recordatoriosms'],
                    'iddistrito' => $row['ID_DISTRITO'],
                    'idcanton' => $row['ID_CANTON'],
                    'idprovincia' => $row['ID_PROVINCIA'],
                    'idpais' => $row['idpais'],
                    'pais' => $row['pais'],
                    'idnacionalidad' => $row['idnacionalidad'],
                    'nacionalidad' => $row['nacionalidad'],
                    'puesto' => $row['puesto'],
                    'idactividad' => $row['idactividad'],
                    'actividad' => $row['actividad'],
                    'idcentro' => $row['idcentro'],
                    'centro' => $row['centro'],
                    'tipoempleado' => $row['tipoempleado'],
                    'codigo' => $row['codigoempleado'],
                    'fechaingreso' => $row['fechaingreso'],
                    'estado' => $row['estado'],
                    'imagen' => $row['ID_IMAGEN'], //Para saber si tiene imagen de perfil
                    'top' => $row['DS_TOP'],
                    'left' => $row['DS_LEFT']
                );
            }
        }

        echo json_encode($my_array);
    }
    public function actualizarDatosPersonales($accion) {
        $this->recTel = 0;
        $this->recEmail = 0;
        $this->recSms = 0;
        $this->OP_IDENTIFICACION = $_GET['tipoidentificacion'];
        $this->DS_IDENTIFICACION = $_GET['cedula'];
        $this->ID_RELIGION = $_GET['religion'];
        $this->ID_ETNIA = $_GET['etnia'];
        $this->ID_ESCOLARIDAD = $_GET['escolaridad'];
        $this->DS_NOMBRE = $_GET['nombre'];
        $this->ALIAS = $_GET['alias'];
        $this->DS_APELLIDO1 = $_GET['ape1'];
        $this->DS_APELLIDO2 = $_GET['ape2'];
        $this->ID_NACIONALIDAD = $_GET['nacionalidad'];
        $this->FechaNac = $_GET['fechanac'];
        $this->OP_SEXO = $_GET['sexo'];
        $this->OP_CIVIL = $_GET['civil'];
        $this->TIPOSANGRE = $_GET['tiposangre'];
        $this->RECORDATORIODIAS = $_GET['dias'];
        $this->RECORDATORIOHORAS = $_GET['horas'];
        if ($_GET['tel'] == "true") {
            $this->recTel = 1;
        }
        if ($_GET['email'] == "true") {
            $this->recEmail = 1;
        }
        if ($_GET['sms'] == "true") {
            $this->recSms = 1;
        }
        $this->ID_PAIS = $_GET['idpais'];
        $this->ID_PROVINCIA = $_GET['idprovincia'];
        $this->ID_CANTON = $_GET['idcanton'];
        $this->ID_DISTRITO = $_GET['iddistrito'];
        $img = "no";
        $this->ID_PERSONA = $this->generarllaveFisica();
        if ($accion == "add") {
            $this->ID_PERSONAVIEJO = "";
        } else {
            $this->ID_PERSONAVIEJO = $_SESSION['IdPersona'];
            $id = substr($this->ID_PERSONA, 0, 22);
            $idviejo = substr($this->ID_PERSONAVIEJO, 0, 22);
            if ($id == $idviejo) {
                $this->ID_PERSONA = $this->ID_PERSONAVIEJO;
            }
        }
        $sql = "pa_ActualizarDatosPersonales('" . $this->ID_PERSONA . "','" .
                $this->ID_PERSONAVIEJO . "','" .
                $this->OP_IDENTIFICACION . "','" .
                $this->DS_IDENTIFICACION . "','" .
                $this->ID_RELIGION . "','" .
                $this->ID_ETNIA . "','" .
                $this->ID_ESCOLARIDAD . "','" .
                $this->DS_NOMBRE . "','" .
                $this->ALIAS . "','" .
                $this->DS_APELLIDO1 . "','" .
                $this->DS_APELLIDO2 . "','" .
                $this->OP_SEXO . "','" .
                $this->OP_CIVIL . "','" .
                $this->TIPOSANGRE . "','" .
                $this->recTel . "','" .
                $this->recEmail . "','" .
                $this->recSms . "','" .
                $this->RECORDATORIODIAS . "','" .
                $this->RECORDATORIOHORAS . "','" .
                $this->FechaNac . "','" .
                $this->ID_NACIONALIDAD . "','" .
                $this->ID_PAIS . "','" .
                $this->ID_PROVINCIA . "','" .
                $this->ID_CANTON . "','" .
                $this->ID_DISTRITO . "','" .
                $accion;
        $objDatos = new AccesoDatos();
        $objDatos->ejecutarPA($sql);
        $error = $objDatos->devuelveError();
        if ($error != "") {
            echo $error;
        } else {
            $_SESSION['IdPersona'] = $this->ID_PERSONA;
        }
    }

    public function actualizarImagen() {
        $idimagen = $_GET['idimagen'];
        $idpersona = $_SESSION['IdPersona'];
        $binario_nombre_temporal = $_FILES['archivo']['tmp_name'];
        $imagen = addslashes(fread(fopen($binario_nombre_temporal, "rb"), filesize($binario_nombre_temporal)));
        $nombre = $_FILES['archivo']['name'];
        $peso = $_FILES['archivo']['size'];
        $tipo = $_FILES['archivo']['type'];
        $opimagen = $_GET['opimagen'];
        $fc_imagen = $_GET['fc_imagen'];
        $top = $_GET['top'];
        $left = $_GET['left'];
        $oper = $_GET['oper'];
        $sql = "pa_ActualizarImagen('" . $idimagen . "','" . $idpersona . "','" . $imagen . "','" . $nombre . "','" . $peso . "','" . $tipo . "','" . $observacion . "','" . $fc_imagen . "','" . $opimagen . "','" . $top . "','" . $left . "','" . $oper;
        $objDatos = new AccesoDatos();
        $objDatos->ejecutarPA($sql);
        $error = $objDatos->devuelveError();
        if ($error != "") {
            echo $error;
        }
    }

    public function actualizarOtrosDatosPersonales() {
        $centro = $_GET['idcentro'];
        $idactividad = $_GET['idactividad'];
        $puesto = $_GET['idpuesto'];
        $sql = "pa_ActualizarOtrosDatosPersonales('" . $_SESSION['IdPersona'] . "','" .
                $idactividad . "','" .
                $puesto . "','" .
                $centro;
        $objDatos = new AccesoDatos();
        $objDatos->ejecutarPA($sql);
        $error = $objDatos->devuelveError();
        echo $error;
    }

    public function actualizarTelefonos() {
        $idtelefono = $_POST['tipotel'];
        $vltelefono = $_POST['telefono'];
        $codigo = $_POST['codigo'];
        $extension = $_POST['ext'];
        $oper = $_POST['oper'];
        $vltelefonoviejo = $_POST['id'];
        if ($oper == "del") {
            $vltelefono = $_POST['id'];
        }
        if ($oper == "add") {
            $vltelefonoviejo = 0;
        }
        $idpersona = $_SESSION['IdPersona'];
        $sql = "pa_ActualizarTelefonos('" . $idpersona . "','" . $idtelefono . "','" . $vltelefono . "','" . $codigo . "','" . $extension . "','" . $oper . "','" . $vltelefonoviejo;
        $objDatos = new AccesoDatos();
        $objDatos->ejecutarPA($sql);
        $error = $objDatos->devuelveError();
        if ($error != "") {
            echo $error;
        }
    }

    public function actualizarEmail() {
        
        
        $idpersona = $_SESSION['IdPersona'];
        
        if (isset($_POST['email'])) {
            $idemail = $_POST['id'];
        $dsemail = $_POST['email'];
        $idcontacto = $_POST['tipo'];
        $oper = $_POST['oper'];
}else if (isset($_GET['email'])) {
            $idemail = $_GET['id'];
        $dsemail = $_GET['email'];
        $idcontacto = $_GET['tipo'];
        $oper = $_GET['oper'];
}


        if ($oper == 'add') {
            $idemail = 0;
        }
        $sql = "pa_ActualizarEmail('" . $idemail . "','" . $idpersona . "','" . $dsemail . "','" . $idcontacto . "','" . $oper;
        $objDatos = new AccesoDatos();
        $objDatos->ejecutarPA($sql);
        $error = $objDatos->devuelveError();
        if ($error != "") {
            echo $error;
        }
    }

    public function traerImagenPerfil() {
        $sql = "SELECT * FROM prs_imagenes where id_persona ='" . $_SESSION['IdPersona'] . "' and op_imagen='1'";
        $objDatos = new AccesoDatos();
        $objDatos->ejecutarConsultaSencilla($sql);
        $error = $objDatos->devuelveError();
        if ($error != "") {
            echo $error;
        } else {

            while ($row = $objDatos->devuelveArreglo()) {
                header("Content-type:'" . $row['DS_TIPO'] . "'");

                echo $row['IM_IMAGEN'];
            }
        }
    }

    private function generarllaveFisica() {
        $consecutivos = 0;
        $idpais = $this->agregarCeros(3, $this->ID_PAIS);
        $idprovincia = $this->agregarCeros(2, $this->ID_PROVINCIA);
        $idcanton = $this->agregarCeros(2, $this->ID_CANTON);
        $iddistritos = $this->agregarCeros(2, $this->ID_DISTRITO);
        $año = substr($this->FechaNac, 0, 4);
        $mes = substr($this->FechaNac, 5, 2);
        $dia = substr($this->FechaNac, 8, 2);
        $iniciales = $this->sacaIniciales($this->DS_NOMBRE, $this->DS_APELLIDO1);
        $llave = $idpais . $idprovincia . $idcanton . $iddistritos . $año . $mes . $dia . $this->OP_SEXO . $iniciales;
        $sql = "pa_comprobarLLave('" . $llave;
        $objDatos = new AccesoDatos();
        $objDatos->ejecutarConsulta($sql);
        if ($objDatos->devuelveRegsLeidos() > 0) {
            while ($row = $objDatos->devuelveArreglo()) {
                $consecutivos = substr($row['ID_PERSONA'], 22, 3);
            }
            $consecutivos += 1;
            $consecutivos = $this->agregarCeros(3, $consecutivos);
            return $llave .= $consecutivos;
        } else {
            return $llave.= "001";
        }
    }

    private function agregarCeros($x, $id) {
        $ceros = $x - strlen($id);
        $ds_ceros = "";
        for ($i = 1; $i <= $ceros; $i++) {
            $ds_ceros .= "0";
        }
        return $ds_ceros . $id;
    }

    private function sacaIniciales($nombre, $ape) {
        $nombre = substr($nombre, 0, 2);
        $ape = substr($ape, 0, 2);
        return strtoupper($nombre . $ape);
    }

    public function actualizarDir() {
        $id = $_POST['id'];
        $idpersona = $_SESSION['IdPersona'];
        $pais = $_POST['pais'];
        $provincia = $_POST['provincia'];
        $canton = $_POST['canton'];
        $distrito = $_POST['distrito'];
        $senas = $_POST['senas'];
        $residencia = $_POST['tipo'];
        $oper = $_POST['oper'];
        if ($oper == 'add') {
            $id = 0;
        }
        $sql = "pa_ActualizarDireccion('" . $id . "','" . $idpersona . "','" . $pais . "','" . $provincia . "','" . $canton . "','" . $distrito . "','" . $senas . "','" . $residencia . "','" . $oper;
        $objDatos = new AccesoDatos();
        $objDatos->ejecutarPA($sql);
        $error = $objDatos->devuelveError();
        if ($error != "") {
            echo $error;
        }
    }

    public function traerPaises() {
        /*
         * Identifica si es para jqgrid o para autocomplete
         */
        $modo = $_GET['modo'];

        $sql = "Select * from adm_paises" or die("Problemas al obtener los resultados de la tabla porque: " . mysql_error());
        $objDatos = new AccesoDatos();
        $objDatos->ejecutarConsultaSencilla($sql);
        $error = $objDatos->devuelveError();


        if ($error != "") {
            echo $error;
        } else {


            switch ($modo) {
                case 1:
                    echo "<select> ";
                    while ($row = $objDatos->devuelveArreglo()) {
                        echo "<option value='" . $row['ID_PAIS'] . "'>" . $row['DS_PAIS'] . "</option>";
                    }
                    echo "</select>";

                    break;


                case 2:
                    while ($row = $objDatos->devuelveArreglo()) {
                        $cid = $row['ID_PAIS'];
                        $cname = $row['DS_PAIS'];
                        echo "$cname|$cid\n";
                    }
                    break;
            }
        }
    }

    public function traerProvincia() {
        $id = $_GET['id'];
        /*
         * Identifica si es para jqgrid o para autocomplete
         */


        $sql = "Select * from adm_provincias where id_pais =" . $id or die("Problemas al obtener los resultados de la tabla porque: " . mysql_error());
        $objDatos = new AccesoDatos();


        $objDatos->ejecutarConsultaSencilla($sql);
        $error = $objDatos->devuelveError();


        if ($error != "") {
            echo $error;
        } else {
            //echo "<select> ";
            while ($row = $objDatos->devuelveArreglo()) {
                echo "<option value='" . $row['ID_PROVINCIA'] . "'>" . $row['DS_PROVINCIA'] . "</option>";
            }
            // echo "</select>";
        }
    }

    public function traerCantones() {

        $idprovincia = $_GET['idprovincia'];
        $idpais = $_GET['idpais'];

        $sql = "Select * from adm_cantones where id_provincia =" . $idprovincia . " and id_pais=" . $idpais;

        $objDatos = new AccesoDatos();
        $objDatos->ejecutarConsultaSencilla($sql);
        $error = $objDatos->devuelveError();


        if ($error != "") {
            echo $error;
        } else {


            while ($row = $objDatos->devuelveArreglo()) {

                echo "<option value='" . $row['ID_CANTON'] . "'>" . $row['DS_CANTON'] . "</option>";
            }
        }
    }

    public function traerDistritos() {

        $idpais = $_GET['idpais'];
        $idprovincia = $_GET['idprovincia'];
        $idcanton = $_GET['idcanton'];


        $sql = "Select * from adm_distritos where id_canton =" . $idcanton . " and id_provincia=" . $idprovincia . " and id_pais=" . $idpais;
        $objDatos = new AccesoDatos();
        $objDatos->ejecutarConsultaSencilla($sql);
        $error = $objDatos->devuelveError();


        if ($error != "") {
            echo $error;
        } else {


            while ($row = $objDatos->devuelveArreglo()) {

                echo "<option value='" . $row['ID_DISTRITO'] . "'>" . $row['DS_DISTRITO'] . "</option>";
            }
        }
    }
    
    public function traerCorreos(){
        
        
        $idpais = $_GET['idpais'];
        $idprovincia = $_GET['idprovincia'];
        $idcanton = $_GET['idcanton'];


        $sql = "pa_ListarEmail('". $_SESSION['IdPersona'];
        $objDatos = new AccesoDatos();
        $objDatos->ejecutarConsulta($sql);

        if ($error != "") {
            echo $error;
        } else {


            while ($row = $objDatos->devuelveArreglo()) {

                echo "<option value ='". $row['ID_EMAIL'] ."'>" . $row['DS_EMAIL'] . "</option>";
            }
        }
        
        
    }

}

?>
